<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>基础知识</title>
	<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"" rel="stylesheet">
	<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/3.2.3/animate.css" rel="stylesheet">
    <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="../../static/css/public.css" />
	<style type="text/css">
		li{
			text-indent: 2em;
			padding: 5px 0;
		}
	</style>
</head>
<body>
	<!-- 回到顶部 -->
	<div class="topBtn">
		<a href="#top">
			<i class="fa fa-long-arrow-up"></i>
		</a>
	</div>
	<!--右边内容-->
	<div id="app" class="main animated fadeInRight">
		<div class="shadow">
			<div class="Table" v-cloak id="top">
				<div class="TableRow" v-for="(el,index) in list">
					<a class="RowLeft" :href="'#'+el.id"
					:title="el.name"
					>{{el.name}}</a>
					<span class="RowRight">{{el.explain}}</span>
				</div>
			</div>
			<div>
				<h4 id="use">简单动画</h4>
				<p>
					主要有四种动画类型：
					<ul>
						<li>animate:随时间动态改变属性</li>
						<li>animateColor:定义随着时间的推移颜色转换</li>
						<li>animateMotion:使元素沿着动作路径移动</li>
						<li>animateTransform:动画上一个目标元素变换属性，从而使动画控制平移，缩放，旋转或倾斜</li>
					</ul>
				</p>
				<pre>
	<svg width=200 height="200">
	  <path d="M50, 125 C 100, 25 150, 225, 200, 125"
	   style="fill: none; stroke: green;" id="anipath"/>
	  <path d="M-10, -3 L10, -3 L0, -25z" style="fill: yellow; stroke: black;">
	  <animateMotion 
	   path="M50, 125 C 100, 25 150, 225, 200, 125"  repeatCount="indefinite"
	   dur="3s" fill="freeze"/>
	  </path>
	</svg>  	
	&lt;svg width=200 height="200"&gt;
	  &lt;path d="M50, 125 C 100, 25 150, 225, 200, 125"
	   style="fill: none; stroke: green;"/&gt;
	  &lt;path d="M-10, -3 L10, -3 L0, -25z" style="fill: yellow; stroke: black;"&gt;
	  &lt;animateMotion
	   path="M50, 125 C 100, 25 150, 225, 200, 125"  repeatCount="indefinite"
	   dur="3s" fill="freeze"/&gt;
	  &lt;/path&gt;
	&lt;/svg&gt; 
	
	attributeName：发生动画效果的属性名。
	from：单次动画的初始值。
	to：单次动画的结束值。
	dur：单次动画的持续时间。
	repeatCount：动画的循环模式。
	calcMode="动画的插补模式。可以是'discrete', 'linear', 'paced', 'spline'"
	rotate="auto|auto-reverse" 在路径外部|内部运动
	xlink:href="一个引用&lt;path&gt;元素",例如：
	&lt;animateMotion xlink:href="#rect" ……/&gt;
	&lt;rect id="rect" width="20" fill="green"/&gt;
	引用外部路径：
	&lt;animateMotion&gt;&lt;mpath xlink:href="#path"/&gt; &lt;/animateMotion&gt;
	&lt;path id="path" d="M50, 125 C 100, 25 150, 225, 200, 125"/&gt;
				</pre>
				<pre>
		<svg width="200px" height="150">
		  <rect x="0" y="0" width="100" height="100" fill="#feac5e">
		    <animate attributeName="x" from="0" to="500" dur="2s" repeatCount="indefinite" />
		  </rect>
		  <rect x="25" y="35" width="10" height="3" fill="red">
		    <animateTransform attributeType="XML" 
			attributeName="transform" dur="5" type="rotate" 
			from="20 60 60" to="360 60 60" repeatCount="indefinite"/>
		  </rect>
		</svg>   
	&lt;svg width="200px" height="150"&gt;
	  &lt;rect x="0" y="0" width="100" height="100" fill="#feac5e"&gt;
	    &lt;animate attributeName="x" from="0" to="500" dur="2s" repeatCount="indefinite" /&gt;
	  &lt;/rect&gt;
	  &lt;rect x="25" y="35" width="10" height="3" fill="#feac5e"&gt;
	    &lt;animateTransform attributeType="XML" 
			attributeName="transform" begin="0s" dur="5s" type="rotate" 
			from="20 60 60" to="360 60 60" repeatCount="indefinite"/&gt;
	  &lt;/rect&gt;
	&lt;/svg&gt;   
	 
	&lt;animateTransform&gt;
	type="类型的转换其值是随时间变化。可以是 'translate', 'scale', 'rotate', 'skewX', 'skewY'"	
				
	<svg width="250" height="120" >
	  <rect
		x="50" y="50"
		width="50" height="50"
		fill="red">
	    <animateTransform
		  attributeName="transform"
		  attributeType="XML"
		  type="rotate"
		  from="0 75 75"
		  to="360 75 75"
		  dur="2"
		  begin="click"
		  repeatCount="indefinite" />
	  </rect>
	</svg>  	
	&lt;svg width="500" height="250" &gt;
	  &lt;rect
		x="50" y="50"
		width="50" height="50"
		fill="red"&gt;
		&lt;animateTransform
		  attributeName="transform"
		  attributeType="XML"
		  type="rotate"
		  from="0 75 75"
		  to="360 75 75"
		  dur="2"
		  begin="click"	//点击后才开始运动
		  repeatCount="indefinite" /&gt;
	  &lt;/rect&gt;
	&lt;/svg&gt; 	
	
	从上面两个例子可以看出	，from、to的第一个参数是角度，第二、第三个参数是rotate的绝对坐标
	begin:可以设置多种类型，1、默认从0s开始，2、可以设置点击后运动，
	3、点击一个图形后(begin="rect.click+1s"),
	4、点击一个图形后重复2次2秒后(begin="rect.repeat(2)+2s")，
	5、点击d键后一秒开始(begin="accessKey(d)+1s")
				</pre>
			</div>
			<div>
				<h4 id="handler">js操作动画</h4>
				<pre>
	obt.onclick = function () {
	    animate.beginElement();
	  }				
				</pre>
			</div>
			<div>
				<h4 id="link">svg动画参考</h4>
				<ul>
					<li>
				<a href="https://www.html5tricks.com/demo/svg-css3-face/index.html"
					target="_blank">SVG结合CSS3实现的一套动画表情</a>	
					</li>
					<li>
				<a href="https://www.html5tricks.com/demo/svg-css3-heart-like-button/index.html"
					target="_blank">SVG和CSS3实现的爱心Like按钮</a>	
					</li>
					<li>
				<a href="https://www.html5tricks.com/demo/svg-css3-3d-bike-running/index.html"
					target="_blank">
					SVG/CSS3镂空3D自行车骑行动画</a>
					</li>
				</ul>
			</div>
		</div>
	</div>
	<!--页面加载进度条-->
	<script src="https://cdn.bootcdn.net/ajax/libs/pace/0.5.0/pace.min.js"></script>
	<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.5.17/vue.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: function() {
				return {
					list: [
						{ name: "简单动画",id: "use",explain: ''},
						{ name: "js操作动画",id: "handler",explain: ''},
						{ name: "svg动画参考",id: "link",explain: ''},
					]
				}
			},
			mounted() {
			}
		})
	</script>
</body>

</html>